home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKit / Source / MiscGISKit / MiscWorldCoord.m < prev    next >
Text File  |  1995-07-20  |  3KB  |  105 lines

  1. /*=========================== MiscWorldCoord.m ==============================*/
  2. /* MiscWorldCoord class contains and supports values representing locations
  3.    in a World coordinate system. Angles are stored internally as radians
  4.    at all times, but may be stored or retrieved as degrees.
  5.  
  6.    It uses the instance of MiscPlanetCoordConverter for converting to other
  7.    coordinate systems.
  8.  
  9.    DMA Release 0.8, Copyright @1993 by Genesis Project, Ltd. All Rights
  10.    Reserved. For further information on terms and conditions see:
  11.         Documentation/GISKit/Agreements-Legal-README
  12.  
  13. HISTORY
  14. 25-Feb-93  Dale Amon at GPL
  15.        Created.
  16. */
  17.  
  18. #import <misckit/miscgiskit.h>
  19.  
  20. @implementation MiscWorldCoord
  21.  
  22. /*===========================================================================*/
  23. /* Initialization methods */
  24. /*===========================================================================*/
  25. /* DESIGNATED INITIALIZER */
  26.  
  27. -initDescription: (char *) txt constants: anObject
  28.  {
  29.     [super initDescription: txt
  30.              converter: [MiscPlanetCoordConverter new]
  31.              constants: anObject];
  32.     return self;
  33.  }
  34.  
  35. /*---------------------------------------------------------------------------*/
  36. /* Block the designated initializer of our parent class */
  37.  
  38. -initDescription: (char *) txt
  39.        converter: (id <MiscCoordConverterServer>) aConverter
  40.        constants: anObject
  41.  {    [self error:"  %s class should not be sent '%s' messages\n",
  42.             [[self class] name], sel_getName(_cmd)];
  43.     return self;
  44.  }
  45.  
  46.  
  47. /*===========================================================================*/
  48. /* Coordinate handling methods */
  49. /*===========================================================================*/
  50. /* set World Coord value from radians */
  51.  
  52. -setCoordLatitudeRadians: (double) lat
  53.         longitudeRadians: (double) lon
  54.             altitude: (double) alt
  55.  {    [self setCoord: lat : lon : alt];
  56.     return self;
  57.  }
  58.  
  59. /*---------------------------------------------------------------------------*/
  60. /* set World Coord value from degrees */
  61.  
  62. -setCoordLatitudeDegrees: (double) lat
  63.         longitudeDegrees: (double) lon
  64.             altitude: (double) alt
  65.  {    [self setCoord: [MiscCoord degreesToRadians: lat]
  66.               : [MiscCoord degreesToRadians: lon]
  67.               : alt];
  68.  
  69.     return self;
  70.  }
  71.  
  72. /*---------------------------------------------------------------------------*/
  73. //* Get World Coord value in radians */
  74.  
  75. -coordLatitudeRadians: (double *) lat
  76.      longitudeRadians: (double *) lon
  77.          altitude: (double *) alt
  78.  {    [self coord: lat : lon : alt];
  79.     return self;
  80.  }
  81.  
  82. /*---------------------------------------------------------------------------*/
  83. /* Get World Coord value in degrees */
  84.  
  85. -coordLatitudeDegrees: (double *) lat
  86.      longitudeDegrees: (double *) lon
  87.          altitude: (double *) alt
  88.  {    [self coord: lat : lon : alt];
  89.  
  90.     *lat = [MiscCoord degreesToRadians: *lat];
  91.     *lon = [MiscCoord degreesToRadians: *lon];
  92.     return self;
  93.  }
  94.  
  95. /*---------------------------------------------------------------------------*/
  96. /* World coordinates are: latitude, longitude and altitude */
  97.  
  98. -(double) latitudeRadians  {return [self coord1];}
  99. -(double) latitudeDegrees  {return [MiscCoord radiansToDegrees: [self coord1]];}
  100. -(double) longitudeRadians {return [self coord2];}
  101. -(double) longitudeDegrees {return [MiscCoord radiansToDegrees: [self coord2]];}
  102. -(double) altitude       {return [self coord3];}
  103.  
  104. @end
  105.